#pragma once
#ifndef TYPES_H
#define TYPES_H

#include<QGraphicsItem>
#include<memory>
#include<opencv2/core/core.hpp>


const int NumberNodeStart = QGraphicsItem::UserType + 11;
const int NumberNodeCount = 10;

enum ItemType{
    Type_NodeItem = QGraphicsItem::UserType + 10,
    Type_NodeSocket = QGraphicsItem::UserType + 2,
    Type_NodeEdge = QGraphicsItem::UserType + 3,

    Type_NodeGraphics = QGraphicsItem::UserType + 4,

    Type_NodeItemNumber = NumberNodeStart,
    Type_NodeItemAdd = NumberNodeStart + 1,
    Type_NodeItemSub = NumberNodeStart + 2,
    Type_NodeItemMul = NumberNodeStart + 3,
    Type_NodeItemDiv = NumberNodeStart + 4,
    Type_NodeItemOutput = NumberNodeStart + 5,

};

enum EDGE_MODE{
    EDGE_NOOP = 0,
    EDGE_DRAG = 1,
    EDGE_CUTE = 2

};

enum POSITION{
    LEFT_TOP = 1,
    RIGHT_TOP = 2,
    LEFT_BOTTOM = 3,
    LEFT_RIGHT_BOTTOM = 4,

};
enum SOCKET_TYPE{
    SOCKET_INPUT = 0,
    SOCKET_OUTPUT = 1
};
enum SOCKET_DATA_TYPE{

};

enum DATATYPE{
    DATA_NUMBER = 0,
    DATA_IMAGE = 1,
    DATA_OTHER = 2
};


enum NodeType{
    Node_Output =0,
    Node_Number =1
};

struct NumberData{
    double data[2]={0};
    int data_length = 0;
};


struct CVDate{
    cv::Mat data;
    int data_length = 0;
};

struct GLData{

};

struct MeshData{

};



#endif // TYPES_H
